#!/bin/bash
# 本脚本仅供学习
# 2593988556@qq.com
#
#  QQ：1994321167 帮助
#
#
#yum install -y wget && wget -O max.sh http://www.tajubao.com/max.sh && sh max.sh
#特别本地化
#
echo -e "清理日志中"
cd /
cd /usr/bin
rm -rf wget-log.*
echo "正在加载库"
cd /
cd /root
################################################################################################储存库
wd="wd" #默认启动命令
download=http://www.tajubao.com #结尾不带/符号
life_name=max.sh #文件名字，包括扩展名在内
command_sql="/command_id"
command_id="command"
command_disk_info1="8xdisknameinfo"
speedtest_mb="speed_mb"
#
#
server_cpu_model_name_shell=$(cat /proc/cpuinfo | grep "model name" |uniq) #获取cpu型号名字
server_cpu_model_name="${server_cpu_model_name_shell:13:99}" #截取CPU版号具体型号名字
#
server_cpu_cpu=$(grep 'physical id' /proc/cpuinfo |sort |uniq |wc -l) #获取CPU物理数量
#
server_free_kb=$(free | awk '/Mem/ {print $2}') #获取服务器内存大小，单位kb
server_free_mb=$(expr $server_free_kb / 1024 ) #内存换算kb -> mb
server_free_gb=$(awk -v x=$server_free_mb -v y=1024 'BEGIN{printf "%.2f\n",x/y}') #内存换算 mb -> gb
#
server_dev_free_kb=$(df -k ./ | awk '{print int($2)}' | tail -n 1) #获取硬盘容量 kb
server_dev_free_gb=$(awk -v x="$server_dev_free_kb" -v y=1024 'BEGIN{printf "%.2f\n",x/y/y}') #换孙硬盘容量kb -》 gb
#
server_lan_ip=$(ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}' ) #获取内网IP
server_wan_ip="$(curl 'ifconfig.io/ip')" #获取公网IP
#
server_cpu_cpu_mhz_shell=$(cat /proc/cpuinfo | grep "cpu MHz" | uniq) #获取cpu频率
server_cpu_mhz_a="${server_cpu_cpu_mhz_shell:11:99}"
server_cpu_mhz_b="${server_cpu_cpu_mhz_shell:11:99}"
server_cpu_mhz=$(awk -v x=$server_cpu_mhz_a -v y=0.$server_cpu_mhz_b 'BEGIN{printf "%.0f\n",x-y}') #运行包含小数点的计算
#
#
server_ip_line_shell="$(curl http://myip.ipip.net | awk '{print $6}' )" #获取ip线路
server_ip_gps_country_shell="$(curl http://myip.ipip.net | awk '{print $3}' )" #获取ip地区 为截取前 国家
server_ip_gps_country="${server_ip_gps_country_shell:4}" #截取后 国家
server_ip_gps_province=$(curl http://myip.ipip.net | awk '{print $4}' ) #获取ip地区 省
server_ip_gps_city="$(curl http://myip.ipip.net | awk '{print $5}' )"  #获取ip地区 市
#
server_load_5min="$(cat /proc/loadavg | cut -d ' ' -f 1-3 | awk '{print $1}')" #服务器5分钟的负载
server_load_10min="$(cat /proc/loadavg | cut -d ' ' -f 1-3 | awk '{print $2}')" #服务器10分钟的负载
server_load_15min="$(cat /proc/loadavg | cut -d ' ' -f 1-3 | awk '{print $3}')" #服务器15分钟的负载
#
server_mbps_m_shell="null"
server_mbps_w_shell="null"
#
server_disk_number="$(fdisk -l |grep 'Disk' |grep -v 'VolGroup' |awk -F , '{print $1}' | sed 's/Disk identifier.*//g' | sed '/^$/d'|wc -l)" #获取硬盘数量
#获取硬盘数量
#
#
server_disk_info="$(fdisk -l |grep 'Disk' |grep -v 'VolGroup' |awk -F , '{print $1}' | sed 's/Disk identifier.*//g' |sed 's/Disk //g' | sed '/^$/d')" #获取硬盘信息
#获取硬盘信息
#
server_disk_chako="$(cat /proc/scsi/scsi)"
#
##################################################################################################储存库
##################################################################################################运算库
#统计硬盘数量 
server_disk_unmber_no_handle="$(lsblk -d -o name,rota | wc -l )"
server_disk_unmber_yes_handle="$(expr $server_disk_unmber_no_handle - 2 )" #获取硬盘数量第二种方式
#
server_disk_name_and_disk_ssd_or_dhh_info="$(lsblk -d -o name,rota )"
####################################################################
                            cd /
                        if [ ! -d "$command_sql" ];then
                            mkdir $command_sql
                        fi
                        cd $command_sql                                           #判断默认的脚本启动命令储存库是否存在，如果不存在则新建一个
                        if [ ! -e "$command_id" ];then
                            touch $command_id
                            chmod 755 $command_id
                        fi
                            cd /
                            cd root
####################################################################
cd /
cd $command_sql
if [ ! -e "$command_disk_info1" ];then
touch $command_disk_info1                                                        #判断默认硬盘x8的名字信息是否存在，如果不存在则创建一个
chmod 755 $command_disk_info1
fi
cd /
cd root
####################################################################
cd /
cd $command_sql
if [ ! -e "speedtest-cn-cli" ];then
curl -O https://ftp.speedtest.cn/cli/linux/speedtest-cn-cli && chmod +x speedtest-cn-cli            #如果测速脚本不存在
fi
cd /
cd root
###################################################################

###################################################################
cd /
cd $command_sql
if [ ! -e "$speedtest_mb" ];then
touch $speedtest_mb                                                                                 #如果测速记录文件不存在则新建一个
chmod 755 $speedtest_mb
fi
cd /
cd root
###################################################################

                                                                      ###
############################################################################
                                                                      ###
                                                                      
cd /
cd $command_sql
echo "$server_disk_name_and_disk_ssd_or_dhh_info" > $command_disk_info1        #将服务器硬盘名字和是否机械硬盘等等信息写入文件中
cd /
cd root
server_disk_number_x1_name="$(sed -n '3p' $command_disk_info1 | awk '{print $1}')"
server_disk_number_x2_name="$(sed -n '4p' $command_disk_info1 | awk '{print $1}')"
server_disk_number_x3_name="$(sed -n '5p' $command_disk_info1 | awk '{print $1}')"
server_disk_number_x4_name="$(sed -n '6p' $command_disk_info1 | awk '{print $1}')"
server_disk_number_x5_name="$(sed -n '7p' $command_disk_info1 | awk '{print $1}')"
server_disk_number_x6_name="$(sed -n '8p' $command_disk_info1 | awk '{print $1}')"
server_disk_number_x7_name="$(sed -n '9p' $command_disk_info1 | awk '{print $1}')"
server_disk_number_x8_name="$(sed -n '10p' $command_disk_info1 | awk '{print $1}')"


   ###
############################################################################
   ###
cd / #前往根目录
cd /usr/bin #前往目录/usr/bin
if [ ! -e "$wd" ];then #如果默认命令文件不存在
    echo "文件不存在" #提示文件不存在
    wget -O $life_name $download/$life_name #下载脚本文件
    dos2unix $life_name #将脚本格式转换为linux可识别类型
    chmod 755 $life_name #赋予755权限
    mv $life_name $wd #更改原文件名为默认启动命令
fi #判断结束
cd / #回到根目录
cd /root #回到root权限目录


##################################################################################################运算库
while true #永远循环
do #永远循环的开头
    while [ "$home" != "0" ] && [ "$home" != "1" ] && [ "$home" != "2" ] && [ "$home" != "3" ] && [ "$home" != "4" ] && [ "$home" != "5" ] && [ "$home" != "6" ] && [ "$home" != "7" ] && [ "$home" != "8" ] && [ "$home" != "9" ] && [ "$home" != "10" ] && [ "$home" != "11" ] && [ "$home" != "12" ]
    #循环判断变量home 不等于1-12
    do #循环的开头
        home="1" #变量赋值1
        echo -e "已回到菜单。" ：
    done #循环的结束
    case $home in #如果home变量的值等于
        0) #变量的值是0 则
            echo -e "已退出脚本"
            exit #结束脚本
        ;; #结束
        1) #变量的值是1 则
            echo -e "==============菜单如下=============="
            echo -e "(0) 退出脚本 | "
            echo -e "(1) 主页菜单 | "
            echo -e "(2) 综合信息 | "
            echo -e "(3) CPU信息  | "
            echo -e "(4) 硬盘信息 | "
            echo -e "(5) 变量状态 | "
            echo -e "(6) 帮助中心 | "
            echo -e "(7) 更新脚本 | "
            echo -e "(8) 暂无信息 | "
            echo -e "(9) 暂无信息 | "
            echo -e "(10) 实用工具 | "
            echo -e "(11) 暂无信息 | "
            echo -e "(12) 暂无信息 | "
            read -p "请回复相应数字: " home;
        ;; #结束
        2) #变量的值是2 则
            echo "================================================================"
            echo -e " II  CPU x$server_cpu_cpu  II   \033[32m $server_cpu_model_name\033[0m"
            echo "================================================================"
            echo -e " II  配置 II        \033[32m $(nproc) \033[0mH\033[32m $server_free_gb \033[0mGB\033[32m $server_dev_free_gb \033[0mG \033[32m$server_mbps_m_shell\033[0m MB↑ \033[32m$server_mbps_w_shell\033[0m MB↓"
            echo "================================================================"
            echo -e " II  IP II              \033[32m$server_lan_ip\033[0m/\033[32m$server_wan_ip\033[0m"
            echo "================================================================"
            echo " II 地区 && 线路 II  $server_ip_gps_country  $server_ip_gps_province  $server_ip_gps_city  $server_ip_line_shell"
            echo "================================================================"
            echo " "
            read -p "前往菜单：（0）" home;
        ;;
        3) #变量的值是3 则
            echo -e "\033[32m==================================================================================\033[0m"
            #
            echo -e "\033[32m==                          ///===================================================\033[0m"
            #
            echo -e "\033[32m==    =====================///    $server_cpu_model_name\033[0m"
            #
            echo -e "\033[32m==    =====\033[0m\033[47m\033[37m########\033[0m\033[0m\033[32m=======///=====================================================\033[0m"
            #
            echo -e "\033[32m==    =====\033[0m\033[47m\033[37m########\033[0m\033[0m\033[32m======///====\033[0mCPU x$server_cpu_cpu\033[32m=====\033[0m\033[33m Core X$(nproc) \033[0m\033[32m=========\033[0m\033[31m $server_cpu_mhz Mhz\033[0m\033[32m============\033[0m"
            #
            echo -e "\033[32m==    =====\033[0m\033[47m\033[37m########\033[0m\033[0m\033[32m=====///=======================================================\033[0m"
            #
            echo -e "\033[32m==    =================///       \033[37m 反馈邮箱：hi@tajubao.com \033[0m"
            #
            echo -e "\033[32m==                    ///=========================================================\033[0m"
            #
            echo -e "\033[32m==================================================================================\033[0m"
            echo " "
            read -p "前往菜单：（0）" home;
        ;;
        4)
            echo -e "\033[44m\033[34m==============================================================================================\033[0m\033[0m"
            echo -e "\033[44m——————————————————————————————————————————————————————————————————————————————————————————————\033[0m"
            echo -e "\033[44m   ______________________________                                                             \033[0m"
            echo -e "\033[44m  |/      ___________________   \|                                                            \033[0m"
            echo -e "\033[44m  | 0 ___/                   \ 0 |                                                            \033[0m"
            echo -e "\033[44m  |  /                        \  |              硬盘数量 X$server_disk_number                                   \033[0m"
            echo -e "\033[44m  | |                          | |                                                            \033[0m"
            echo -e "\033[44m  | |                          | |                                                            \033[0m"
            echo -e "\033[44m  | |                          | |                                                             \033[0m"
            echo -e "\033[44m  | |                          | |                                                            \033[0m"
            echo -e "\033[44m  | |                          | |                                                            \033[0m"
            echo -e "\033[44m  | |                          | |                                                            \033[0m"
            echo -e "\033[44m  | |                          | |                                                            \033[0m"
            echo -e "\033[44m  | |                          | |                                                            \033[0m"
            echo -e "\033[44m  | |                          | |                                                            \033[0m"
            echo -e "\033[44m  | |                          | |                                                            \033[0m"
            echo -e "\033[44m  |  \                     ___/  |                                                            \033[0m"
            echo -e "\033[44m  | 0 \___________________/    0 |                                                            \033[0m"
            echo -e "\033[44m  |\____________________________/|                                                            \033[0m"
            echo -e "\033[44m——————————————————————————————————————————————————————————————————————————————————————————————\033[0m"
            echo -e "\033[44m\033[34m==============================================================================================\033[0m\033[0m"
            read -p "前往菜单：（0）" home;
        ;;
        5) #如果变量的值是5则显示各个变量的状态，供别人判断脚本状态和快速找出问题所在并解决
            echo -e "处理器型号：$server_cpu_model_name"
            echo -e "物理CPU数量：$server_cpu_cpu"
            echo -e "服务器内存容量：$server_free_kb/KB"
            echo -e "服务器内存容量：$server_free_mb/MB"
            echo -e "服务器内存容量：$server_free_gb/GB"
            echo -e "硬盘储存容量：$server_dev_free_kb/KB"
            echo -e "硬盘储存容量：$server_dev_free_gb/GB"
            echo -e "内网IP：$server_lan_ip"
            echo -e "外网IP：$server_wan_ip"
            echo -e "服务器线路(联通、电信、移动)：$server_ip_line_shell"
            echo -e "服务器地区(国家)：$server_ip_gps_country"
            echo -e "服务器地区(省)：$server_ip_gps_province"
            echo -e "服务器地区(市)：$server_ip_gps_city"
            echo -e "服务器5分钟的负载百分比：$server_load_5min%"
            echo -e "服务器10分钟的负载百分比：$server_load_10min%"
            echo -e "服务器15分钟的负载百分比：$server_load_15min%"
            echo -e "$server_mbps_shell"
            
            read -p "前往菜单：（0）" home;
        ;;
        6)
            echo -e "\033[42m\033[32m++++++++++++++++++++\033[0m\033[0m帮助中心\033[42m\033[32m++++++++++++++++++++\033[0m\033[0m"
            echo -e "1.如果获取外网IP的链接失效，请自建一个PHP页面，"
            echo -e "内容如下填进去放在另一台服务器或主机上,最后把链接替换成你自建网页的链接即可。 "
            echo -e '                                                                              '
            echo -e '<?php                                                                         '
            echo -e 'echo $_SERVER['REMOTE_ADDR'];                                                 '
            echo -e '?>                                                                            '
            echo -e "\033[42m\033[32m++++++++++++++++++++\033[0m\033[0m\033[31m我有底线\033[0m\033[42m\033[32m++++++++++++++++++++\033[0m\033[0m"
            read -p "前往菜单：（0）" home;
        ;;
        7)
            
            
            cd / #回到根目录
            cd /usr/bin #前往usr/bin
            echo "正在更新中"
            wget -O $life_name $download/$life_name #下载脚本文件
            dos2unix $life_name #转换为linux可读类型
            chmod 755 $life_name #赋予755权限
            mv $life_name $wd #更改文件名
            cd / #回到根目录
            cd /root #回到root权限目录
            echo -e "已更新完成,请输入 \033[32m$wd\033[0m 启动。"
            exit #脚本结束
            
            
        ;;
        8)
            echo -e "暂无信息"
            read -p "前往菜单：（0）" home;
        ;;
        9)
            echo -e "暂无信息"
            read -p "前往菜单：（0）" home;
        ;;
        10) #10//工具子页面-开始
            
            home="X" #主页菜单暂停中
            tool="1" #启动工具列表菜单
            
            while [ "$tool" != "out" ] #循环 变量tool 的值 不是 out 则持续循环
            do
                case $tool in #如果tool的值等于相应值，则执行相依值的命令。
                    0) #如果tool的值等于0
                        echo -e "已退出工具"
                        tool="out" #定义值是out
                        home=1 #启动主页面菜单
                    ;;
                    1) #如果tool的值等于1
                        echo -e "1.工具列表"
                        echo -e "2.工具列表"
                        echo -e "3.工具列表"
                        echo -e "4.服务器测速"
                        echo -e "5.新增快捷命令"
                        echo -e "6.删除快捷命令"
                        read -p "前往菜单：（0）" tool;
                    ;;
                    2)  #如果tool的值等于2
                        echo -e "2.工具具体"
                        read -p "前往菜单：（0）" tool;
                    ;;
                    3) #如果tool的值等于3
                        echo -e "3.工具具体"
                        read -p "前往菜单：（0）" tool;
                    ;;
                    4) #如果tool的值等于4
                        echo -e "正在测速中"
                        cd /
                        cd $command_sql
                        server_mbps_shell="$(./speedtest-cn-cli)"  #测速结果赋值给server_mbps_shell变量

                        server_wm_mbps="${server_mbps_shell// Mbps/}"    #把变量中指定字符（Mbps）替换掉

                        echo "$server_wm_mbps" > "$speedtest_mb" &
                        wait

                        server_mbps_w_shell="$(sed -n '4p' "$speedtest_mb" | awk '{print ($NF -l)}')"     #前部未截取前
                        server_mbps_m_shell="$(sed -n '5p' "$speedtest_mb" | awk '{print ($NF -l)}')"
                        
                        
                         #

                        
                        echo -e "上传：$server_mbps_m_shell MB"
                        echo -e "下载：$server_mbps_w_shell MB"
                        echo -e "测速完成，该结果已同步请回到主菜单到综合信息页查看"
                        read -p "前往菜单：（0）" tool;
                    ;;
                    5) #如果tool的值等于5
                        echo -e "\033[32m 新增快捷命令 \033[0m"
                        echo " "
                        echo -e "新增快捷命令，但是默认命令依然存在。"
                        echo -e "输入0退出脚本"
                        read -p "输入新快捷命令" default_start;
                        
                        
                        while [ "$default_start" == "bt" ] || [ "$default_start" == "$wd" ]
                        do
                             case $default_start in
                                 bt)
                                echo -e "“ bt ”是宝塔官方命令，不允许使用。"
                                read -p "重新输入新快捷命令" default_start;
                                 ;;
                                 $wd)
                                echo -e "这是默认命令，已经存在。"
                                read -p "重新输入新快捷命令" default_start;
                                 ;;
                             esac
                        done
                        cd /
                        cd /usr/bin
                        if [ -e "$default_start" ];then
                            echo -e "这个命令已经存在"
                            echo -e "可能是系统默认的命令"   
                            echo -e "我无法判断"
                            echo -e "如果强制使用它可能会让你服务器死掉"
                            echo -e "输入“ 0 ”可以退出本功能"
                            
                            read -p "可以重新输入快捷命令，还来得及：" default_start;
                            
                        fi
                        if [ -e "$default_start" ];then
                        
                            echo -e "是否确定强制使用"
                            echo -e "如果确定强制使用，请输入你想强制使用的命令"
                            echo -e "后果自负"
                            echo -e "输入“ 0 ”可以退出本功能"
                            
                            read -p "重新输入快捷命令，还来得及：" default_start;
                            
                        fi
                        cd /
                        cd root
                        
                        
                        
                        default_start_true="1" #执行的开关 
                        while [ "$default_start" == "0" ]
                        do
                            echo -e "已退出本页面，回到子页"
                            default_start_true="0" #关闭执行
                            default_start="x"
                            tool="1"
                        done
                        
                        if [ "$default_start_true" == "1" ];then #判断
                            cd / #前往根目录
                            cd /usr/bin #前往环境变量目录
                            echo "正在执行中" #提示文本，可与可恶
                            touch $default_start #建立一个命令文件
                            echo "" > $default_start #清空文件内容
                            echo "exec $wd" >> $default_start #把启动命令写入文件
                            chmod 755 $default_start
                            cd / #前往根目录
                            cd $command_sql
                            
                            echo "$default_start" >> $command_id
                            cd /
                            cd /root #回到root权限目录
                            echo -e "已更新完成,请输入 \033[32m$default_start\033[0m 启动。"
                            tool=1
                        fi
                    ;;
                    6)
                    #################################################################################################################################################
                                        while_command_so_true="1"          #默认开启循环
                              while [ "$while_command_so_true" != "0" ]
                                do
                                read -p "请输入想要删除的命令：" default_start; #接受终端信号
                                    cd /
                                    cd $command_sql
                                    command_so="$(nl $command_id | sed "/$default_start/q" | awk '{print $2}' | grep "$default_start" )"          #搜索是否有要删除的命令
                                if [ "$default_start" == "$command_so" ];then
                                      sed -i "/$default_start/d" $command_id                                                                       #删除那个命令，和所在行数
                                      cd /                                                                                                         #前往根目录
                                      cd /usr/bin                                                                                                  #前往环境变量目录
                                      rm -rf $default_start
                                      cd /                                                                                                         #前往根目录
                                      cd /root                                                                                                     #前往root权限目录
                                      echo -e "命令已删除，如果还想继续删除请继续输入要删除的命令。"
                                      echo -e "输入‘ 0 ’ 退出本功能。"
                                fi
                                if [ "$default_start" != "$command_so" ];then
                                if [ "$default_start" == "0" ];then
                                echo -e "已回到子菜单"
                                while_command_so_true="0" #结束循环
                                tool="1"
                                fi
                                echo -e "该命令不存在你的命令库中，无法删除。"
                                while_command_so_true="0"
                                tool="1"
                                fi

                                done
 
                    #################################################################################################################################################
                    ;;
                esac
                if [ "$tool" != "out" ] && [ "$tool" != "0" ] && [ "$tool" != "1" ] && [ "$tool" != "2" ] && [ "$tool" != "3" ] && [ "$tool" != "4" ] && [ "$tool" != "5" ] && [ "$tool" != "6" ];then
                    tool="1"
                fi
            done
            #10//工具子页面-结束
        ;;
        11)
            echo -e "暂无信息"
            read -p "前往菜单：（0）" home;
        ;;
        12)
            echo -e "暂无信息"
            read -p "前往菜单：（0）" home;
        ;;
    esac
done #永远循环的结尾